筆者為了從零開始學習這三個技術所以揉合出這個主題。
主要是把實作驗證後的知識記錄下來,除了實作步驟,也會講為什麼這麼做、背後的優缺點是什麼,讓理論跟實作並行。
學習的過程會用很多不同 AI 工具,也是筆者一個嘗試將 AI 融入消化知識的流程裡,透過摸索跟驗證找到更適合特定場景跟目的的學習工具包。
這一系列主要會專注在 Golang 學習,大約會有 50%,那 Elasticsearch 約 20%, Kubernetes 為 30%。
這個系列是面向讀的是對於這三種技術都沒有相關知識跟經驗的工程師。如果有 Python, Node.js 等後端經驗有助於上手,但沒有也不妨礙閱讀與實作。
在這一系列文章結束後,你可以獲得一個 GitHub repo 跟初學者指南。
如果有任何想法,都歡迎留言交流。
草擬大綱如下:
Day | 主題 | 目標 |
---|---|---|
1 | 專案骨架 | go mod init 、REST /healthz 起跑 |
2 | 測試骨架 | table-driven 單測 2 則 |
3 | 中介層 | 結構化日誌、Recovery、設定 |
4 | API 成形 | /search 先回假資料 |
5 | context/timeout | 所有外呼加 timeout |
6 | 錯誤策略 | %w 包裝、分類重試(退避+抖動) |
7 | 微基準 | go test -bench 建立基線 |
8 | 併發基礎 | worker pool(有限併發) |
9 | pprof | 找到 1 個熱點並改善 |
10 | 指標輸出 | 暴露 QPS/Latency |
11 | ES 介面層 | 定義 SearchService (尚未連 ES) |
12 | 整合測試 | 以假 ES 寫 E2E |
13 | 打通真路徑 | 連上本機 ES 的 smoke test |
14 | 穩定化 | 清理目錄、補測試、寫 README |
15 | Recap | 複習 Golang 內容 |
Day | 主題 | 目標 |
---|---|---|
16 | 安裝起床 | Docker 單節點、固定 mapping |
17 | 查詢打底 | match/bool/terms |
18 | 分頁方案 | 換成 search_after |
19 | Bulk | 匯入 5–10 萬筆 |
20 | 參數調優 | 微調刷新/副本並壓測 |
21 | 備份還原 | 1 次 Snapshot/Restore |
22 | Recap | 複習 Elasticsearch 內容 |
Day | 主題 | 目標 |
---|---|---|
23 | 容器化 | 多階段 Dockerfile、probe |
24 | 基礎部署 | Deployment + Service + Config/Secret |
25 | 資源治理 | Requests/Limits 就位 |
26 | HPA | 設 CPU HPA、叢內 hey 壓測 |
27 | 邊界與權限 | 最小 NetworkPolicy、RBAC |
28 | 觀測 | Prom/Grafana 最小看板 |
29 | 小故障演練 | 刪 Pod、記 MTTR 與錯誤率尖峰 |
30 | Phase 3 Recap & Final | 複習 Kubernetes 內容、反思與展望 |
Let’s learn in public!🚀